home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / OCFINC.PAK / OCBOCOLE.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  26KB  |  648 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectComponents
  3. // Copyright (c) 1994, 1997 by Borland International, All Rights Reserved
  4. //
  5. // $Revision:   2.9  $
  6. //
  7. // ObjectComponents BOcOle engine linking & embedding interfaces
  8. //----------------------------------------------------------------------------
  9. #if !defined(OCF_OCBOCOLE_H)
  10. #define OCF_OCBOCOLE_H
  11.  
  12. #if !defined(OCF_OCOBJECT_H)
  13. # include <ocf/ocobject.h>       // Get ocf structs & enums
  14. #endif
  15. #if !defined(WINSYS_GEOMETRY_H)
  16. # include <winsys/geometry.h>    // TPoint, TSize & TRect
  17. #endif
  18. #if defined(BI_PLAT_WIN32)
  19. # include <pshpack8.h>
  20. #endif
  21.  
  22. #if defined(BI_NAMESPACE)
  23. namespace OCF {
  24. #endif
  25.  
  26. //
  27. // BOcOle DLL name, entry point and version resource
  28. //
  29. #if defined(BI_PLAT_WIN32)
  30. # define BOLEDLL "BOCOF.DLL"
  31. # define BOLEDLLW "BOCOFW.DLL"
  32. #else
  33. # define BOLEDLL "BOCOLE.DLL"
  34. # define BOLEDLLW BOLEDLL
  35. #endif
  36. #define BOLEBIND "CreateClassMgr"
  37. #define BOLE_FILEVER_LS 0x00010054L
  38. #define BOLE_FILEVER_MS 0x00010001L
  39.  
  40. //
  41. // GUIDs exported by the BOcOle DLL
  42. //
  43. #if defined(INIT_BGUID)
  44. # define DEFINE_BOLEGUID(name, l) \
  45.          EXTERN_C __export const GUID CDECL FAR name = \
  46.          { l, 0, 0, {0xC0,0,0,0,0,0,0,0x46} }
  47. #else
  48. # define DEFINE_BOLEGUID(name, l) EXTERN_C const GUID CDECL FAR name
  49. #endif
  50.  
  51. DEFINE_BOLEGUID(IID_IBPart,          0x02A104L);
  52. DEFINE_BOLEGUID(IID_IBSite,          0x02A105L);
  53. DEFINE_BOLEGUID(IID_IBContainer,     0x02A106L);
  54. DEFINE_BOLEGUID(IID_IBDocument,      0x02A107L);
  55. DEFINE_BOLEGUID(IID_IBService,       0x02A108L);
  56. DEFINE_BOLEGUID(IID_IBApplication,   0x02A109L);
  57. DEFINE_BOLEGUID(IID_IBClassMgr,      0x02A10AL);
  58. DEFINE_BOLEGUID(IID_IBLinkInfo,      0x02A10BL);
  59. DEFINE_BOLEGUID(IID_IBLinkable,      0x02A10CL);
  60. DEFINE_BOLEGUID(IID_IBRootLinkable,  0x02A10DL);
  61. DEFINE_BOLEGUID(IID_IBContains,      0x02A10EL);
  62. DEFINE_BOLEGUID(IID_BOleDocument,    0x02A10FL);
  63. DEFINE_BOLEGUID(IID_BOlePart,        0x02A110L);
  64. DEFINE_BOLEGUID(IID_IBDataConsumer,  0x02A111L);
  65. DEFINE_BOLEGUID(IID_IBDataProvider,  0x02A112L);
  66. DEFINE_BOLEGUID(IID_IBWindow,        0x02A113L);
  67. DEFINE_BOLEGUID(IID_IBDataNegotiator,0x02A114L);
  68. DEFINE_BOLEGUID(IID_IBDropDest,      0x02A115L);
  69. DEFINE_BOLEGUID(IID_BOleShadowData,  0x02A116L);
  70. DEFINE_BOLEGUID(IID_IBClass,         0x02A117L);
  71. DEFINE_BOLEGUID(IID_IBOverrideBrowseLinks, 0x02A118L);
  72. DEFINE_BOLEGUID(IID_BOleSite,        0x02A119L);
  73. DEFINE_BOLEGUID(IID_IBSite2,         0x02A11AL);
  74. DEFINE_BOLEGUID(IID_IBOverrideHelpButton,  0x02A11BL);
  75. DEFINE_BOLEGUID(IID_IBDataProvider2,  0x02A11CL);
  76. DEFINE_BOLEGUID(IID_IBPart2,          0x02A11DL);
  77. DEFINE_BOLEGUID(IID_IBService2,       0x02A11EL);
  78. DEFINE_BOLEGUID(IID_BOleControl,      0x02A11FL);
  79. DEFINE_BOLEGUID(IID_IBControl,        0x02A120L);
  80. DEFINE_BOLEGUID(IID_IBControlSite,    0x02A121L);
  81. DEFINE_BOLEGUID(IID_BOleFont,         0x02A122L);
  82. DEFINE_BOLEGUID(IID_BOleControlSite,  0x02A123L);
  83. DEFINE_BOLEGUID(IID_IBEventsHandler,  0x02A124L);
  84. DEFINE_BOLEGUID(IID_IBEventClass,         0x02A125L);
  85. DEFINE_BOLEGUID(IID_IBSinkList,           0x02A126L);
  86. DEFINE_BOLEGUID(IID_BOlePicture,      0x02A127L);
  87. //DEFINE_BOLEGUID(IID_BOlePart2,        0x02A127L);
  88. DEFINE_BOLEGUID(IID_IBPicture,       0x02A128L);
  89. DEFINE_BOLEGUID(IID_IBDataState,     0x02A129L);
  90.  
  91. //
  92. // BOle Class ids for instantiating BOle objects (helpers)
  93. //
  94. typedef uint32 BCID;
  95. const BCID  cidBOleService      = 1L;   //
  96. const BCID  cidBOleDocument     = 2L;   // helper for containers
  97. const BCID  cidBOlePart         = 3L;   // helper for sites
  98. const BCID  cidBOleSite         = 4L;   // helper for parts
  99. const BCID  cidBOleInProcSite   = 5L;   // helper for parts
  100. const BCID  cidBOleContainer    = 6L;   // helper for part documents
  101. const BCID  cidBOleData         = 7L;   // helper for data transfer
  102. const BCID  cidBOleFactory      = 8L;   // helper for class factory
  103. const BCID  cidBOleShadowData   = 9L;   // helper for non delayed rendering
  104. const BCID  cidBOleInProcHandler= 10L;  // helper for dll handler parts
  105. const BCID  cidBOleControl      = 11L;  // helper for controls
  106. const BCID  cidBOleFont         = 12L;  // IBFont implementation
  107. const BCID  cidBOleControlSite  = 13L;  // helper for controls
  108. const BCID  cidBOleControlFactory = 14L;// helper for control class factory
  109. const BCID  cidBOlePicture      = 15L;  // IBPicture implementation
  110.  
  111. //
  112. // Forward declarations
  113. //
  114. class _ICLASS IBClassMgr;
  115. class _ICLASS IBPart;
  116. class _ICLASS IBService;
  117. class _ICLASS IBLinkable;
  118. class _ICLASS IBRootLinkable;
  119. class _ICLASS IBContains;
  120. class _ICLASS IBDocument;
  121. class _ICLASS IBContainer;
  122. class _ICLASS IBSite;
  123. class _ICLASS IBApplication;
  124. class _ICLASS IBLinkInfo;
  125. class _ICLASS IBDataNegotiator;
  126. class _ICLASS IBDataProvider;
  127. class _ICLASS IBDataConsumer;
  128. class _ICLASS IBWindow;
  129. class _ICLASS IBDropDest;
  130. class _ICLASS IBClass;
  131. class _ICLASS IBOverrideBrowseLinks;
  132. class _ICLASS IBSite2;
  133. class _ICLASS IBOverrideHelpButton;
  134. class _ICLASS IBPart2;
  135. class _ICLASS IBDataProvider2;
  136. class _ICLASS IBService2;
  137. class _ICLASS IBControlSite;
  138. class _ICLASS IBControl;
  139. class _ICLASS IBEventsHandler;
  140. class _ICLASS IBEventClass;
  141. class _ICLASS IBSinkList;
  142. class _ICLASS IBDataState;
  143.  
  144.  
  145. // MAP_PIX_TO_LOGHIM / MAP_LOGHIM_TO_PIX --
  146. //
  147. // The OLE2-defined macros for these guys don't round. Our versions
  148. // add half the denominator so that the truncated result of the integer
  149. // division is rounded to the nearest integer.
  150. //
  151. #define HIMETRIC_PER_INCH   2540      // number HIMETRIC units per inch
  152.  
  153. #ifdef MAP_PIX_TO_LOGHIM
  154. #undef MAP_PIX_TO_LOGHIM
  155. #endif
  156. #define MAP_PIX_TO_LOGHIM(pixel, pixelsPerInch) \
  157.         ((ULONG) ((((ULONG)HIMETRIC_PER_INCH) * pixel + (pixelsPerInch >> 1)) / pixelsPerInch))
  158.  
  159. #ifdef MAP_LOGHIM_TO_PIX
  160. #undef MAP_LOGHIM_TO_PIX
  161. #endif
  162. #define MAP_LOGHIM_TO_PIX(hiMetric, pixelsPerInch) \
  163.     (UINT) ((((double) hiMetric) * pixelsPerInch + (HIMETRIC_PER_INCH >> 1)) / HIMETRIC_PER_INCH)
  164.  
  165.  
  166. //
  167. // IClassMgr abstract base class
  168. //
  169. class _ICLASS IBClassMgr : public IUnknown {
  170.   public:
  171.    virtual HRESULT _IFUNC ComponentCreate(
  172.       IUnknown far* far* ppRet,
  173.       IUnknown far* pAggregator,
  174.       BCID     idClass
  175.      )  = 0;
  176.    virtual HRESULT _IFUNC ComponentInfoGet(
  177.       IUnknown far* far* ppInfo,
  178.       IUnknown far* pAggregator,
  179.       BCID     idClass
  180.      )  = 0;
  181. };
  182.  
  183. //
  184. // IBDataNegotiator -- Enumerats formats for drag/drop and paste
  185. //
  186. class _ICLASS IBDataNegotiator : public IUnknown {
  187.   public:
  188.     virtual uint     _IFUNC CountFormats()                      = 0;
  189.     virtual HRESULT  _IFUNC GetFormat(uint, TOcFormatInfo far*) = 0;
  190. };
  191.  
  192. //
  193. // IBDataConsumer -- Supported by containers who want to accept drag/drop
  194. //                   and paste. No new methods over the negotiator, so
  195. //                   this is just a placeholder for the consumer name.
  196. //
  197. class _ICLASS IBDataConsumer : public IBDataNegotiator {
  198. };
  199.  
  200. //
  201. // IBDataProvider -- Supported by parts and/or sites which can be
  202. //                   copied to the OLE2 clipboard
  203. //
  204. class _ICLASS IBDataProvider : public IBDataNegotiator {
  205.   public:
  206.     virtual HANDLE  _IFUNC GetFormatData(TOcFormatInfo far*)       = 0;
  207.     virtual HRESULT _IFUNC Draw(HDC, const RECTL far*,
  208.                                 const RECTL far*, TOcAspect,
  209.                                 TOcDraw bd = drNone)               = 0;
  210.     virtual HRESULT _IFUNC GetPartSize(TSize far*)                 = 0;
  211.     virtual HRESULT _IFUNC Save(IStorage far*, BOOL fSamAsLoad,
  212.                                 BOOL fRemember)                    = 0;
  213. };
  214.  
  215. //
  216. // IBDataProvider2 -- new version of IBDataProvider
  217. //
  218. class _ICLASS IBDataProvider2 : public IBDataProvider {
  219.   public:
  220.     virtual HRESULT _IFUNC SetFormatData(TOcFormatInfo far* fmt, HANDLE data, BOOL release) = 0;
  221. };
  222.  
  223. //
  224. // IBPart -- Supported by server objects
  225. //
  226. class _ICLASS IBPart : public IBDataProvider {
  227.   public:
  228.     virtual HRESULT _IFUNC Init(IBSite far*, TOcInitInfo far*)     = 0;
  229.     virtual HRESULT _IFUNC Close()                                 = 0;
  230.     virtual HRESULT _IFUNC CanOpenInPlace()                        = 0;
  231.     virtual HRESULT _IFUNC SetPartSize(TSize far*)                 = 0;
  232.     virtual HRESULT _IFUNC SetPartPos(TRect far*)                  = 0;
  233.     virtual HRESULT _IFUNC Activate(BOOL)                          = 0;
  234.     virtual HRESULT _IFUNC Show(BOOL)                              = 0;
  235.     virtual HRESULT _IFUNC Open(BOOL)                              = 0;
  236.     virtual HRESULT _IFUNC EnumVerbs(TOcVerb far*)                 = 0;
  237.     virtual HRESULT _IFUNC DoVerb(uint)                            = 0;
  238.     virtual HWND    _IFUNC OpenInPlace(HWND)                       = 0;
  239.     virtual HRESULT _IFUNC InsertMenus(HMENU, TOcMenuWidths far*)  = 0;
  240.     virtual HRESULT _IFUNC ShowTools(BOOL)                         = 0;
  241.     virtual void    _IFUNC FrameResized(const TRect far*, BOOL)    = 0;
  242.     virtual HRESULT _IFUNC DragFeedback(TPoint far*, BOOL)         = 0;
  243.     virtual HRESULT _IFUNC GetPalette(LOGPALETTE far* far*)        = 0;
  244.     virtual HRESULT _IFUNC SetHost(IBContainer far* pObjContainer) = 0;
  245.     virtual HRESULT _IFUNC DoQueryInterface(const IID far& iid, void far* far* pif)= 0;
  246.  
  247.     virtual LPOLESTR _IFUNC GetName(TOcPartName)                   = 0;
  248. };
  249.  
  250. //
  251. // IBPart2 -- Supported by server objects
  252. //
  253. class _ICLASS IBPart2 : public IBPart,
  254.                         public IBDataProvider2 {
  255. };
  256.  
  257. //
  258. // IService abstract base class
  259. //
  260. class _ICLASS IBService : public IUnknown {
  261.   public:
  262.     virtual void     _IFUNC OnResize()                           = 0;
  263.     virtual void     _IFUNC OnActivate(BOOL)                     = 0;
  264.     virtual HRESULT  _IFUNC OnModalDialog(BOOL)                  = 0;
  265.     virtual HRESULT  _IFUNC OnSetFocus(BOOL)                     = 0;
  266.  
  267.     virtual HRESULT  _IFUNC Init(IBApplication far*)             = 0;
  268.     virtual HRESULT  _IFUNC RegisterClass(LPCOLESTR, IBClassMgr far*,
  269.                                           BCID, BOOL embedInSelf,
  270.                                           BOOL singleUse) = 0;
  271.     virtual HRESULT  _IFUNC UnregisterClass(LPCOLESTR)           = 0;
  272.     virtual HRESULT  _IFUNC TranslateAccel(MSG far*)             = 0;
  273.     virtual TOcHelp  _IFUNC HelpMode(TOcHelp)                    = 0;
  274.     virtual HRESULT  _IFUNC CanClose()                           = 0;
  275.  
  276.     virtual HRESULT  _IFUNC BrowseClipboard(TOcInitInfo far*)    = 0;
  277.     virtual HRESULT  _IFUNC Browse(TOcInitInfo far*)             = 0;
  278.  
  279.     virtual HRESULT  _IFUNC Paste(TOcInitInfo far*)              = 0;
  280.     virtual HRESULT  _IFUNC Clip(IBDataProvider far*, BOOL, BOOL,
  281.                                  BOOL)                           = 0;
  282.     virtual HRESULT  _IFUNC Drag(IBDataProvider far*, TOcDropAction,
  283.                                  TOcDropAction far*)             = 0;
  284.     virtual IStorage FAR* _IFUNC CreateStorageOnFile(LPCOLESTR,
  285.                                                      BOOL)       = 0;
  286.     virtual HRESULT _IFUNC ConvertUI(IBPart far*, BOOL,
  287.                                      TOcConvertInfo far*)        = 0;
  288.     virtual HRESULT _IFUNC ConvertGuts(IBPart far*, BOOL,
  289.                                        TOcConvertInfo far*)      = 0;
  290.     virtual TOcMenuEnable _IFUNC EnableEditMenu(TOcMenuEnable,
  291.                                                 IBDataConsumer far*)= 0;
  292. };
  293.  
  294. class _ICLASS IBService2 : public IBService {
  295.   public:
  296.     virtual HRESULT  _IFUNC BrowseControls(TOcInitInfo far*)    = 0;
  297.     virtual HRESULT  _IFUNC RegisterControlClass(LPCOLESTR, IBClassMgr far*,
  298.                                           BCID, BOOL embedInSelf,
  299.                                           BOOL singleUse) = 0;
  300.     virtual HRESULT  _IFUNC UnregisterControlClass(LPCOLESTR)    = 0;
  301. };
  302.  
  303. //
  304. // ILinkable abstract base class
  305. //
  306. class _ICLASS IBLinkable : public IUnknown {
  307.   public:
  308.     virtual HRESULT _IFUNC GetMoniker(IMoniker far* far* ppMon)    = 0;
  309.     virtual HRESULT _IFUNC OnRename(IBLinkable far* pContainer,
  310.                                     LPCOLESTR name)                = 0;
  311.                             // pass 0 name when Doc closes
  312.                             // pass boledoc for pContainer if root part(file)
  313. };
  314.  
  315. //
  316. //
  317. //
  318. class _ICLASS IBRootLinkable : public IBLinkable {
  319.   public:
  320.    virtual HRESULT _IFUNC Init(IBContains far* pC, LPCOLESTR szProgId) = 0;
  321.    virtual HRESULT _IFUNC SetMoniker(IMoniker far* pMon)               = 0;
  322. };
  323. //
  324. // on BOleLinkDoc used by Part servers and Linking Containers
  325. // on BOleSite    used by parts
  326. //
  327.  
  328. //
  329. // IContains abstract base class
  330. //
  331. class _ICLASS IBContains : public IUnknown {
  332.   public:
  333.     virtual HRESULT _IFUNC Init(LPCOLESTR)                               = 0;
  334.     virtual HRESULT _IFUNC GetPart(IBPart far* far*, LPCOLESTR)          = 0;
  335. };
  336. //
  337. // on linkable containers (all Containers with BOleLinkDoc helper)
  338. // on linkable server documents (with BOleLinkDoc helper)
  339. // on intermediate parts (in addition to IPart)
  340. //
  341.  
  342. //
  343. // IBDocument -- Supported by BOleDocument one per container child window
  344. //
  345. class _ICLASS IBDocument : public IUnknown {
  346.   public:
  347.     virtual HRESULT _IFUNC Init(IBContainer far*)                  = 0;
  348.     virtual void    _IFUNC OnResize()                              = 0;
  349.     virtual void    _IFUNC OnActivate(BOOL)                        = 0;
  350.     virtual void    _IFUNC OnClose()                               = 0;
  351.     virtual HRESULT _IFUNC OnSetFocus(BOOL)                        = 0;
  352.  
  353.     virtual HRESULT _IFUNC EnumLinks(IBLinkInfo far* far*)         = 0;
  354.     virtual HRESULT _IFUNC BrowseLinks()                           = 0;
  355.     virtual HRESULT _IFUNC UpdateLinks()                           = 0;
  356. };
  357.  
  358. //
  359. // IBWindow -- Supported on child window *and* frame window of container apps
  360. //
  361. class _ICLASS IBWindow : public IUnknown {
  362.   public:
  363.     virtual HWND     _IFUNC GetWindow()                               = 0;
  364.     virtual HRESULT  _IFUNC GetWindowRect(TRect far*)                 = 0;
  365.     virtual LPCOLESTR _IFUNC GetWindowTitle()                         = 0;
  366.     virtual void     _IFUNC AppendWindowTitle(LPCOLESTR)              = 0;
  367.     virtual HRESULT  _IFUNC SetStatusText(LPCOLESTR)                  = 0;
  368.  
  369.     virtual HRESULT  _IFUNC RequestBorderSpace(const TRect far*)      = 0;
  370.     virtual HRESULT  _IFUNC SetBorderSpace(const TRect far*)          = 0;
  371.  
  372.     virtual HRESULT  _IFUNC InsertContainerMenus(HMENU,
  373.                                                  TOcMenuWidths far*)  = 0;
  374.     virtual HRESULT  _IFUNC SetFrameMenu(HMENU)                       = 0;
  375.     virtual void     _IFUNC RestoreUI()                               = 0;
  376.     virtual HRESULT  _IFUNC Accelerator(MSG far*)                     = 0;
  377.     virtual HRESULT  _IFUNC GetAccelerators(HACCEL far*, int far*)    = 0;
  378. };
  379.  
  380. //
  381. // IBContainer -- Supported by container app's document window
  382. //
  383. class _ICLASS IBContainer : public IBWindow {
  384.   public:
  385.     virtual HRESULT  _IFUNC FindDropDest(TPoint far*, IBDropDest far* far*)=0;
  386.     virtual HRESULT  _IFUNC AllowInPlace()                          = 0;
  387.     virtual HRESULT  _IFUNC BringToFront()                          = 0;
  388. };
  389.  
  390. //
  391. // IBDropDest -- Supported by container app's document window and/or other
  392. //               areas inside the window.
  393. //
  394. class _ICLASS IBDropDest : public IBDataConsumer {
  395.   public:
  396.     virtual HRESULT  _IFUNC Drop(TOcInitInfo far*, TPoint far*,
  397.                                  const TRect far*)                    = 0;
  398.     virtual void     _IFUNC DragFeedback(TPoint far*, const TRect far*,
  399.                                          TOcMouseAction, uint, HRESULT&) = 0;
  400.     virtual HRESULT  _IFUNC Scroll(TOcScrollDir scrollDir)            = 0;
  401.     virtual HRESULT  _IFUNC GetScrollRect(TRect far*)                 = 0;
  402. };
  403.  
  404. //
  405. // IBApplication -- Supported at frame window/app object of container apps
  406. //
  407. class _ICLASS IBApplication : public IBWindow {
  408.   public:
  409.     virtual LPCOLESTR   _IFUNC GetAppName()                           = 0;
  410.     virtual TOcHelp  _IFUNC HelpMode(TOcHelp)                         = 0;
  411.     virtual HRESULT  _IFUNC CanLink()                                 = 0;
  412.     virtual HRESULT  _IFUNC CanEmbed()                                = 0;
  413.     virtual HRESULT  _IFUNC IsMDI()                                   = 0;
  414.     virtual HRESULT  _IFUNC OnModalDialog(BOOL)                       = 0;
  415.     virtual void     _IFUNC DialogHelpNotify(TOcDialogHelp)           = 0;
  416.     virtual void     _IFUNC ShutdownMaybe()                           = 0;
  417. };
  418.  
  419. //
  420. // IBSite -- Supported by container apps for each linked/embedded object
  421. //
  422. class _ICLASS IBSite : public IUnknown {
  423.   public:
  424.     virtual HRESULT _IFUNC SiteShow(BOOL)                             = 0;
  425.     virtual HRESULT _IFUNC DiscardUndo()                              = 0;
  426.     virtual HRESULT _IFUNC GetSiteRect(TRect far*, TRect far*)        = 0;
  427.     virtual HRESULT _IFUNC SetSiteRect(const TRect far*)              = 0;
  428.     virtual HRESULT _IFUNC SetSiteExtent(const TSize far*)            = 0;
  429.     virtual HRESULT _IFUNC GetZoom(TOcScaleInfo far* pScale)          = 0;
  430.     virtual void    _IFUNC Invalidate(TOcInvalidate)                  = 0;
  431.     virtual void    _IFUNC OnSetFocus(BOOL)                           = 0;
  432.     virtual HRESULT _IFUNC Init(IBDataProvider far*, IBPart far*,
  433.                                 LPCOLESTR, BOOL)                      = 0;
  434.     virtual void    _IFUNC Disconnect()                               = 0;
  435. };
  436.  
  437. // IBSite2 -- Add flexibility to have parent of site not be container
  438. //
  439. class _ICLASS IBSite2 : public IBSite {
  440.    public:
  441.      virtual HRESULT _IFUNC GetParentWindow(HWND FAR*)               = 0;
  442. };
  443.  
  444. // IBDataState
  445. //
  446. class _ICLASS IBDataState: public IUnknown {
  447.         public:
  448.         virtual void _IFUNC SetDirty (BOOL)                                                                                                                     = 0;
  449.                 virtual HRESULT _IFUNC IsDirty ()                                                                                                                                       = 0;
  450.                 virtual HRESULT _IFUNC GetClassID (LPCLSID)                                                                                             = 0;
  451. };
  452.  
  453. //
  454. // IBControlSite
  455. //
  456. class _ICLASS IBControlSite : public IUnknown
  457. {
  458.   public:
  459.     virtual HRESULT _IFUNC Init(UINT, IBControl*, UINT)              = 0;
  460.     virtual HRESULT _IFUNC OnPropertyChanged(DISPID dispid)          = 0;
  461.     virtual HRESULT _IFUNC OnPropertyRequestEdit(DISPID dispid)      = 0;
  462.     virtual HRESULT _IFUNC OnControlFocus(BOOL fGotFocus)            = 0;
  463.     virtual HRESULT _IFUNC TransformCoords(TPointL far* lpptlHimetric,
  464.                             TPointF far* lpptfContainer, DWORD flags)  = 0;
  465. };
  466.  
  467. //
  468. // IBControl
  469. //
  470. class _ICLASS IBControl : public IBPart //, public IBDataProvider2
  471. {
  472.   public:
  473.     virtual HRESULT _IFUNC GetEventIID (IID *iidEvent)                 = 0;
  474.     virtual HRESULT _IFUNC GetEventTypeInfo (ITypeInfo FAR * FAR *ppTypeInfo) = 0;
  475.     virtual HRESULT _IFUNC GetCtrlDispatch (IDispatch FAR * FAR *ppDispatch)  = 0;
  476.     virtual HRESULT _IFUNC SetEventDispatch (IDispatch *)              = 0;
  477.     virtual HRESULT _IFUNC SetAmbientDispatch (IDispatch *)            = 0;
  478.  
  479.     // standard control methods - other methods access thru GetCtrlDispatch ()
  480.     virtual HRESULT _IFUNC Refresh ()                                  = 0;
  481.     virtual HRESULT _IFUNC DoClick ()                                  = 0;
  482.     virtual HRESULT _IFUNC AboutBox ()                                 = 0;
  483.  
  484.     virtual HRESULT _IFUNC AmbientChanged (DISPID dispid)              = 0;
  485.  
  486.     // function passed down by BOleControlSite
  487.     virtual HRESULT _IFUNC GetControlInfo (LPCONTROLINFO)              = 0;
  488.     virtual HRESULT _IFUNC OnMnemonic (LPMSG)                           = 0;
  489.     virtual HRESULT _IFUNC FreezeEvents (BOOL)                           = 0;
  490.     virtual HRESULT _IFUNC GetClassInfo (LPTYPEINFO FAR*)              = 0;
  491.     virtual HRESULT _IFUNC GetSizeMax (ULARGE_INTEGER FAR*)                                                     = 0;
  492.     virtual HRESULT _IFUNC Save (LPSTREAM)                                                                                                                      = 0;
  493. };
  494.  
  495. //
  496. // IBSinkList
  497. //
  498. class _ICLASS IBSinkList : public IUnknown {
  499.   public:
  500.     virtual HRESULT _IFUNC NextSink(LPVOID FAR*)                     = 0;
  501.     virtual HRESULT _IFUNC GetSinkAt(int, LPVOID FAR*)               = 0;
  502.     virtual HRESULT _IFUNC Reset()                                     = 0;
  503. };
  504.  
  505. //
  506. // IBEventsHandler
  507. //
  508. class _ICLASS IBEventsHandler : public IUnknown {
  509.   public:
  510.     virtual HRESULT _IFUNC RegisterEventsSet(REFIID, UINT)               = 0;
  511.     virtual HRESULT _IFUNC RegisterConnectionPoint(LPCONNECTIONPOINT)   = 0;
  512.     virtual HRESULT _IFUNC GetSinkListForIID(REFIID, IBSinkList**)      = 0;
  513. };
  514.  
  515. //
  516. // IBEventClass
  517. //
  518. class _ICLASS IBEventClass : public IUnknown {
  519.   public:
  520.     virtual HRESULT _IFUNC GetSinkList(IBSinkList **)                  = 0;
  521.     virtual HRESULT _IFUNC FreezeEvents (BOOL)                                                                                                  = 0;
  522.  
  523. };
  524.  
  525. //
  526. // IBLinkInfo -- Supported by BOleParts which are link objects
  527. //
  528. class _ICLASS IBLinkInfo : public IUnknown {
  529.   public:
  530.     virtual HRESULT _IFUNC SourceBreak()                              = 0;
  531.     virtual HRESULT _IFUNC SourceGet(LPOLESTR, uint count)            = 0;
  532.     virtual HRESULT _IFUNC SourceSet(LPOLESTR)                        = 0;
  533.     virtual HRESULT _IFUNC SourceOpen()                               = 0;
  534.     virtual HRESULT _IFUNC UpdateGet(TOcLinkUpdate far*)              = 0;
  535.     virtual HRESULT _IFUNC UpdateSet(TOcLinkUpdate)                   = 0;
  536.     virtual HRESULT _IFUNC UpdateNow()                                = 0;
  537. };
  538.  
  539. //
  540. // IBClass -- Supported by BOleFactory
  541. //
  542. class _ICLASS IBClass : public IClassFactory {
  543.   public:
  544.     virtual HRESULT _IFUNC Init(BOOL selfEmbed, LPCOLESTR pszProgId,
  545.                                 IBClassMgr* pCM, BCID rid)            = 0;
  546.     virtual HRESULT _IFUNC Register(BOOL singleUse)                   = 0;
  547.     virtual HRESULT _IFUNC Revoke()                                   = 0;
  548.     virtual HRESULT _IFUNC GetClassID(CLSID far* pOut)                = 0;
  549.     virtual BOOL _IFUNC IsA(CLSID far& pOut)                          = 0;
  550.     virtual BOOL _IFUNC AllowEmbedFromSelf()                          = 0;
  551.     virtual HRESULT _IFUNC GetEmbeddingHelperFactory(LPUNKNOWN *ppF)  = 0;
  552. };
  553.  
  554. //
  555. // IBOverrideBrowseLinks -- Supported by containers(who aggregate BOleDoc)
  556. //                          who want to override our BrowseLinks dialog.
  557. //
  558. class _ICLASS IBOverrideBrowseLinks : public IUnknown {
  559.   public:
  560.     virtual HRESULT    _IFUNC BrowseLinks()                        = 0;
  561. };
  562.  
  563. // IBOverrideHelpButton -- Supported by container apps (who aggregate
  564. //                         BOleService) who want to suppress the help
  565. //                         button in our dialogs.
  566. //
  567. class _ICLASS IBOverrideHelpButton : public IUnknown {
  568.   public:
  569.     virtual HRESULT    _IFUNC ShowHelpButton(TOcDialogHelp) = 0;
  570. };
  571.  
  572. //----------------------------------------------------------------------------
  573. // Will eliminate this inline QI in favor of TUnknown version next rev.
  574. //
  575. inline HRESULT _IFUNC IUnknown_QueryInterface(IUnknown FAR *, REFIID iid, LPVOID FAR * pif)
  576. {
  577.   // To avoid handing out different IUnknown pointers for
  578.   // the same Windows Object don't match here.
  579.   // Only match in the main IUnknown in the outermost aggregator.
  580.   //
  581.   return ResultFromScode(E_NOINTERFACE);
  582. }
  583.  
  584. #define DEFINE_INLINE_QI(I, P) \
  585. inline HRESULT _IFUNC I##_QueryInterface(I FAR* This, REFIID iid, LPVOID FAR* pif) \
  586. {                                            \
  587.   return (iid == IID_##I) ?                  \
  588.     (*pif = This), This->AddRef(), HR_OK : \
  589.     P##_QueryInterface(This, iid, pif);      \
  590. }
  591.  
  592. #define DEFINE_INLINE_QI2(I, P1, P2) \
  593. inline HRESULT _IFUNC I##_QueryInterface(I FAR* This, REFIID iid, LPVOID FAR* pif) \
  594. {                                            \
  595.   return (iid == IID_##I) ?                  \
  596.     (*pif = This), ((P1*)This)->AddRef(), HR_OK : \
  597.     SUCCEEDED(P1##_QueryInterface(This, iid, pif))? HR_OK :\
  598.     P2##_QueryInterface(This, iid, pif);      \
  599. }
  600.  
  601. DEFINE_INLINE_QI(IBDataNegotiator, IUnknown)
  602. DEFINE_INLINE_QI(IBDataConsumer, IUnknown)
  603. DEFINE_INLINE_QI(IBDropDest, IBDataConsumer)
  604. DEFINE_INLINE_QI(IBDataProvider, IBDataNegotiator)
  605. DEFINE_INLINE_QI(IBPart, IBDataProvider)
  606.  
  607. DEFINE_INLINE_QI(IBWindow, IUnknown)
  608. DEFINE_INLINE_QI(IBContainer, IBWindow)
  609. DEFINE_INLINE_QI(IBApplication, IBWindow)
  610.  
  611. DEFINE_INLINE_QI(IBDocument, IUnknown)
  612. DEFINE_INLINE_QI(IBService, IUnknown)
  613. DEFINE_INLINE_QI(IBClassMgr, IUnknown)
  614. DEFINE_INLINE_QI(IBLinkInfo, IUnknown)
  615. DEFINE_INLINE_QI(IBSite, IUnknown)
  616. DEFINE_INLINE_QI(IBSite2, IBSite)
  617. DEFINE_INLINE_QI(IBContains, IUnknown)
  618.  
  619. DEFINE_INLINE_QI(IBLinkable, IUnknown)
  620. DEFINE_INLINE_QI(IBRootLinkable, IBLinkable)
  621. DEFINE_INLINE_QI(IClassFactory, IUnknown)
  622. DEFINE_INLINE_QI(IBClass, IClassFactory)
  623.  
  624. DEFINE_INLINE_QI(IBOverrideBrowseLinks, IUnknown)
  625. DEFINE_INLINE_QI(IBOverrideHelpButton, IUnknown)
  626. DEFINE_INLINE_QI(IBDataProvider2, IBDataProvider)
  627. DEFINE_INLINE_QI2(IBPart2, IBPart, IBDataProvider2)
  628.  
  629. DEFINE_INLINE_QI(IBService2, IBService)
  630. DEFINE_INLINE_QI(IBControl, IBPart)
  631. DEFINE_INLINE_QI(IBControlSite, IUnknown)
  632. DEFINE_INLINE_QI(IBEventsHandler, IUnknown)
  633. DEFINE_INLINE_QI(IBEventClass, IUnknown)
  634. DEFINE_INLINE_QI(IBSinkList, IUnknown)
  635. DEFINE_INLINE_QI(IBDataState, IUnknown)
  636.  
  637. //----------------------------------------------------------------------------
  638.  
  639. #if defined(BI_PLAT_WIN32)
  640. # include <poppack.h>
  641. #endif
  642.  
  643. #if defined(BI_NAMESPACE)
  644. } // namespace OCF
  645. #endif
  646.  
  647. #endif  // OCF_OCBOCOLE_H
  648.